#include <iostream>
using namespace std;
typedef long long LL;
const int N = 3e5 + 10;
LL f[N], a[N];
LL n, m;
LL sum[N];
LL l[N], r[N];
LL ret;
int main()
{
    // 请在此输入您的代码
    cin >> n >> m;
    for (int i = 1;i <= m;i++)
    {
        //构建差分数组 
        cin >> l[i] >> r[i];
        f[l[i]]++;f[r[i] + 1]--;
    }
    //还原数组
    //策略是差分加前缀和。差分就是正常差分。在差分还原的时候用前缀和记录有多少个1
    //因为只要是1，就说明这个地方之前的0.我=我们可以通过前缀和计算出每一段有多少1
    for (int i = 1;i <= n;i++)
    {
        f[i] += f[i - 1];
        if (f[i] == 1)
        {
            sum[i] = sum[i - 1] + 1;
        }
        else
        {
            sum[i] = sum[i - 1];
        }
        if (f[i] == 0)
        {
            ret++;
        }
    }
    for (int i = 1;i <= m;i++)
    {
        cout << ret + sum[r[i]] - sum[l[i] - 1] << endl;
    }
    return 0;
}